package com.ledtechdesign.beans.api.pojo;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.ledtechdesign.beans.api.BeanBase;
import com.ledtechdesign.beans.api.IAccountInfo;

public class AccountInfo extends BeanBase implements IAccountInfo {

	// TODO <session-limit>UNLIMITED</session-limit>
	// is UNLIMITED aa possible value for other int fields?

	// TODO string for now.
	private List<String> activeFMSInstances;
	private long bandwidthLimit;
	private Date created;
	private Date expired;
	private String id;
	private Date lastReportedDate;
	private String owner;
	private long reportedTotalBytesDown;
	private long reportedTotalBytesUp;
	private long reportedTotalMessages;
	private String reportedTotalTime;
	// TODO string for now
	private String sessionLimit;
	private long totalBytesDown;
	private long totalBytesUp;
	private long totalMessageLimit;
	private long totalMessages;
	// TODO maybe String due to value NUlL
	private String totalTime;
	// TODO what is this : 011 10:00:00.00
	private String totalTimeLimit;
	private int userCount;
	private int userLimit;

	public AccountInfo() {
		super();

		this.activeFMSInstances = new ArrayList<String>();
	}

	public void addActiveFMSInstance(String newIsntance) {
		this.activeFMSInstances.add(newIsntance);
	}

	public List<String> getActiveFMSInstances() {
		return this.activeFMSInstances;
	}

	public long getBandwidthLimit() {
		return this.bandwidthLimit;
	}

	public Date getCreated() {
		return this.created;
	}

	public Date getExpired() {
		return this.expired;
	}

	public String getId() {
		return this.id;
	}

	public Date getLastReportedDate() {
		return this.lastReportedDate;
	}

	public String getOwner() {
		return this.owner;
	}

	public long getReportedTotalBytesDown() {
		return this.reportedTotalBytesDown;
	}

	public long getReportedTotalBytesUp() {
		return this.reportedTotalBytesUp;
	}

	public long getReportedTotalMessages() {
		return this.reportedTotalMessages;
	}

	public String getReportedTotalTime() {
		return this.reportedTotalTime;
	}

	public String getSessionLimit() {
		return this.sessionLimit;
	}

	public long getTotalBytesDown() {
		return this.totalBytesDown;
	}

	public long getTotalBytesUp() {
		return this.totalBytesUp;
	}

	public long getTotalMessageLimit() {
		return this.totalMessageLimit;
	}

	public long getTotalMessages() {
		return this.totalMessages;
	}

	public String getTotalTime() {
		return this.totalTime;
	}

	public String getTotalTimeLimit() {
		return this.totalTimeLimit;
	}

	public int getUserCount() {
		return this.userCount;
	}

	public int getUserLimit() {
		return this.userLimit;
	}

	public void setActiveFMSInstances(List<String> activeFMSInstances) {
		this.activeFMSInstances = activeFMSInstances;
	}

	public void setBandwidthLimit(long bandwidthLimit) {
		this.bandwidthLimit = bandwidthLimit;
	}

	public void setCreated(Date created) {
		this.created = created;
	}

	public void setExpired(Date expired) {
		this.expired = expired;
	}

	public void setId(String id) {
		this.id = id;
	}

	public void setLastReportedDate(Date lastReportedDate) {
		this.lastReportedDate = lastReportedDate;
	}

	public void setOwner(String owner) {
		this.owner = owner;
	}

	public void setReportedTotalBytesDown(long reportedTotalBytesDown) {
		this.reportedTotalBytesDown = reportedTotalBytesDown;
	}

	public void setReportedTotalBytesUp(long reportedTotalBytesUp) {
		this.reportedTotalBytesUp = reportedTotalBytesUp;
	}

	public void setReportedTotalMessages(long reportedTotalMessages) {
		this.reportedTotalMessages = reportedTotalMessages;
	}

	public void setReportedTotalTime(String reportedTotalTime) {
		this.reportedTotalTime = reportedTotalTime;
	}

	public void setSessionLimit(String sessionLimit) {
		this.sessionLimit = sessionLimit;
	}

	public void setTotalBytesDown(long totalBytesDown) {
		this.totalBytesDown = totalBytesDown;
	}

	public void setTotalBytesUp(long totalBytesUp) {
		this.totalBytesUp = totalBytesUp;
	}

	public void setTotalMessageLimit(long totalMessageLimit) {
		this.totalMessageLimit = totalMessageLimit;
	}

	public void setTotalMessages(long totalMessages) {
		this.totalMessages = totalMessages;
	}

	public void setTotalTime(String totalTime) {
		this.totalTime = totalTime;
	}

	public void setTotalTimeLimit(String totalTimeLimit) {
		this.totalTimeLimit = totalTimeLimit;
	}

	public void setUserCount(int userCount) {
		this.userCount = userCount;
	}

	public void setUserLimit(int userLimit) {
		this.userLimit = userLimit;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuffer sb = new StringBuffer();
		sb.append("MeetingInfo id#" + this.id);
		sb.append("\n\r");
		sb.append("MeetingInfo owner#" + this.owner);
		sb.append("\n\r");
		sb.append("MeetingInfo userLimit#" + this.userLimit);
		sb.append("\n\r");
		sb.append("MeetingInfo totalTimeLimit#" + this.totalTimeLimit);
		sb.append("\n\r");
		sb.append("MeetingInfo totalMessageLimit#" + this.totalMessageLimit);
		sb.append("\n\r");
		sb.append("MeetingInfo userCount#" + this.userCount);
		sb.append("\n\r");
		sb.append("MeetingInfo bandwidthLimit#" + this.bandwidthLimit);
		sb.append("\n\r");
		sb.append("MeetingInfo totalBytesUp#" + this.totalBytesUp);
		sb.append("\n\r");
		sb.append("MeetingInfo reportedTotalBytesUp#"
				+ this.reportedTotalBytesUp);
		sb.append("\n\r");
		sb.append("MeetingInfo totalBytesDown#" + this.totalBytesDown);
		sb.append("\n\r");
		sb.append("MeetingInfo reportedTotalBytesDown#"
				+ this.reportedTotalBytesDown);
		sb.append("\n\r");
		sb.append("MeetingInfo sessionLimit#" + this.sessionLimit);
		sb.append("\n\r");
		sb.append("MeetingInfo activeFMSInstances#" + this.activeFMSInstances);
		sb.append("\n\r");
		sb.append("MeetingInfo totalTime#" + this.totalTime);
		sb.append("\n\r");
		sb.append("MeetingInfo reportedTotalTime#" + this.reportedTotalTime);
		sb.append("\n\r");
		sb.append("MeetingInfo totalMessages#" + this.totalMessages);
		sb.append("\n\r");
		sb.append("MeetingInfo reportedTotalMessages#"
				+ this.reportedTotalMessages);
		sb.append("\n\r");
		sb.append("MeetingInfo created#" + this.created);
		sb.append("\n\r");
		sb.append("MeetingInfo expired#" + this.expired);
		sb.append("\n\r");
		sb.append("MeetingInfo lastReportedDate#" + this.lastReportedDate);
		sb.append("\n\r");
		return sb.toString();
	}
}
